如何自学 Python
阅读文本大概需要 6.66 分钟。
本文首发于我的知识星球「Python 进阶之路」。
计算机这门学科,有非常多的内容。并且如果要深入学习,每个内容都有非常多的知识。对于没有接触过编程的人来说,会找不到学习的方向,不懂得如何学习。如果是在几年之前,互联网还没如此发达。学习编程的途径非常单一,基本上只能靠考上好的大学,跟着名师学习。
但如今利用好互联网上的资源,完全是可以通过自学把一门编程语言学好,甚至学到精通。学会了一门编程语言,再去学习其他的语言,你就能非常快速的上手。这也是很多大牛能掌握多门语言很重要的一点,编程的学习是相通的。
除去编程上非常有天赋的一部分人,其他人包括我,最初学习编程的方式就是靠努力,这也是学好编程很重要的一点。但我除了在努力的基础上,还会结合一些高效的学习方式,让我在学习编程的过程中能更快速的掌握。我以自己学习 python 为例。
1、了解一门语言的前世今生
很多人在接触一门新的编程语言之前,第一个想到的事情,就是先去网上找找相关的编程资源,越多越好。随后会加入各种资源群,去找各种编程资料,然后网盘塞满了几个 T 的资源。看着网盘里各种 xx 最新培训教学视频、心里就觉得非常踏实。但最后这些资料大多只是躺在网盘里,等着积灰。
有的人执行力强些,可能还会看前几节的内容。但很少有人会把整个教学视频全部看完,最后只学习了一点皮毛,就放弃了编程。这种无规划、盲目的学习,是非常耗费自己的时间和精力。并且得不到任何反馈,视频看完了就看完了。如果让你动手写下代码,你会发现根本 无从入手。
而我在学习新的一门编程语言之间,我做的第一件事,并不是去网上找各种编程资料,而是先去了解这门语言的发展史。
我以 python 为例,我会先去网上搜索下 python 这门语言是什么,它的发展史,首先对 python 有个整体的认知。 在了解新的一门语言发展史的过程中,你会发现现在大家使用最多的 python 版本是 3.x,官方也宣布在 2020 之后不在维护 2.x 版本。
而很多网上的教学资源是以 python 2.x 来教学的。如果你事先没有先去了解一门语言的发展史,你就很容易学习以前旧的知识。等你跟着视频学习完之后,你会发现为什么别人的代码和我不一样。这时候你还要在继续学习新的内容,学习的效率一下子就降低了很多。
了解一门语言的前世今生,不仅让你对这门语言有个整体的认知,知道这门语言是什么,还可以避免学习以前的旧知识。编程的知识总是更新换代很快,你如果不去了解,不去接触最新的信息,你就会把大家都不在使用的知识,拼命的学习,到最后发现原来自己一直在学习无用的知识。
关于 python 的发展史,可以参考我之前写的文章
2、画出思维导图
了解语言的发展史是我学习一门新的编程语言所要做的第一件事,随后我会列出这门语言基础内容的思维导图。比如 python,我会先在网上搜寻下 python 的基础知识都有哪些。
有个非常高效的搜集方式就是看一本书的目录,比如《python 基础教程第三版》。还有一种方式就是看各类的培训机构的软文。现在很多技术公众号会接一些技术软文,而这些技术软文把需要学习的每个知识点,都很详细的罗列出来。课程的质量可能参次不齐,但它里面所对应的知识点,就是我们需要掌握的内容。
所以我每次看到一篇软文的时候,我第一反应就是看下这个领域都有哪些知识,我会把这些知识,对应的做成思维导图,就像下面这张 python 基础内容的思维导图。
这个思维导图就把 python 一些基础内容都包括了,而我们接下来需要做的事情,就是逐一的击破。这种思维导图就像一个路标,不会让你在编程的学习过程中迷失了方向。并且目标很明确,就是把这些内容学好。当自己忘记了某个内容,只要在回头看下就好。
并且随着学习的深入,只要在往里面添加新的分支就好。 只要你把这里面的内容全部学完,那你就已经入门了 python。
对于 python 的基础学习,有几份很好的学习资料推荐给大家。
[菜鸟教程]
http://www.runoob.com/python3/python3-tutorial.html
[python 官网]
https://docs.python.org/3/
我最初学习 python 基础内容就是跟着「菜鸟教程」的网站,一个个的学习下来,一周的时间就很快把 python 基础内容给学完了。
3、 多做项目巩固基础
有很多学习编程的人,会陷入到一个误区,太注重理论知识的学习,而忽略实际代码的编写。这样导致的结果就是看似学习了很多内容,比如 python 的装饰器、匿名函数、lamba 表达式等等,但根本就不懂的如何使用。对于这个问题我之前还写了篇文章
编程很多知识都是在一个又一个项目中慢慢的熟悉。我在学习完 python 的基础内容之后,我就开始大量的找些小项目来练习。通过这些小项目,一是巩固自己之前所学的内容,二是学习新的知识。 比如之前自己写的一个小项目,里面涉及到正则表达式的使用,但对于这块内容我不是很熟悉。
在写到与正则表达式有关的代码,我会先停下来去找有关正则表达式的教程,博客。先把正则表达式的内容学明白,在继续编写之后的代码。 在项目中会遇到很多没接触到的知识,遇到自己不熟悉甚至看不懂的代码,不要畏惧,相反应该感到高兴。
因为你把这些内容解决了,你的编程能力又能提升一步,这就是你可以提升的地方。 那这些练习项目又要到哪里找?我把之前自己学习所接触到的项目资源全部列举出来,大家优先选择自己感兴趣的内容学习。
「Python_精选项目课程_在线实验_实验楼 - 实验楼」
https://www.shiyanlou.com/courses/?tag=python
其中「实验楼」还有大量的 python 练习项目,理由有些项目是需要会员才能查看。但教大家一个小技巧,你把「实验楼」里面需要付费查看的项目,把项目名称先在网上搜索下,你就能看到别人分享一模一样的内容,这样你就不用花钱了。
4、爬虫基础学习
项目的练习我一共花了两周的时间,这两周时间我每天都在找一个小项目来练习。通过这两周的项目学习,我对 python 基础内容又有了进步一的理解,也能慢慢自己写出一些小的项目。这时候我就开始下一步的学习。 我首先在网上查找了下 python 都有哪些方向。
这几年随着人工智能和大数据的火爆,python 这门语言也出现在大众的视野,并且越来越热门。现在 python 的方向可以大致分为这几类:1 人工智能、2 机器学习、3 数据分析、4 web、5 后台、6 爬虫。
爬虫和 web 方向相对其他方向来说比较容易学习。所以在了解到 python 一些方向之后,结合自身的情况以及兴趣点,比如我自身数学不好,也只有本科学历,所以我暂时把机器学习和 AI 给排除掉。最后综合自己得能力,我选择了爬虫方向继续进阶学习。
同样我先在网上查找下学习爬虫需要掌握哪些内容,并做出一个思维导图。
一个个的击破,爬虫的学习过程中有一个很好的视频学习资料就是崔庆才的爬虫教程。这份资料我也分享给大家,跟着视频里的内容一个个的学习,就可以把爬虫大部分的知识都学习到(后台回复「python爬虫」即可获取)。
我爬虫的基础内容就是跟着这视频里的教程,一步步的学习。
4、爬虫实战练习
爬虫的基础内容学习完之后,就需要通过大量的实战项目来巩固爬虫的基础,在这里我就列举一些自己所做过的项目。每篇文章我都有详细的说明,里面的源代码我也都上传到 github 上。
除了这些以外你还可以在下面这几个链接里,继续找些项目来练习。 推荐知乎用户 @gaga salamer 的实战练习博客
「知乎用户信息爬虫(规模化爬取)」
http://link.zhihu.com/?target=http%3A//aljun.me/post/22
「用scrapy爬取豆瓣电影新片榜」
http://aljun.me/post/4
「用scrapy对豆瓣top250页面爬取(多页面爬取)」
http://aljun.me/post/5
「用scrapy自动爬取下载图片 | GAGASALAMER」
http://aljun.me/post/6
「用scrapy自动下载石原sama的豆瓣影人图集(727张图片,自动下载)」
http://link.zhihu.com/?target=http%3A//aljun.me/post/7
5、 爬虫书籍
爬虫的书籍推荐《Python3 网络爬虫开发实战》,里面很详细的介绍了爬虫各个方面的知识,非常很全面。如果你以后想要走爬虫方向,建议你购买一本。配合上面的爬虫视频资源,学习的效果非常的好。
6、爬虫面试题
等你把上面的知识都学完之后,尤其是把《Python3 网络爬虫开发实战》这本书认真看一遍过后,在做多几个大型的项目,你就可以去找爬虫的工作了。这时候你就需要刷些面试题。
面试题可以看下这些文章
[PYTHON 一些基础面试题目总结]
https://blog.csdn.net/alvine008/article/details/39229057
[很全的 Python 面试题]
http://python.jobbole.com/85231/
[Python面试必须要看的15个问题]
http://www.cnblogs.com/Vito2008/p/5044251.html
7、 Python 书籍推荐
入门书籍
- 《Python学习手册》
- 《Head First Python》
- 《Learn Python The Hard Way》
- 《Python编程:入门到实践》
- 《笨办法学Python》
- 《简明Python教程》
进阶书籍
- 《Python Cookbook(第三版)》
- 《流畅的Python》
- 《Python源码剖析》
- 《Python进阶》
- 《Flask Web开发:基于Python的Web应用开发实战》
8、总结
这就是我学习 python 爬虫整个过程,我的自学经历,不单单是提供各类资源,更重要的是教大家如何去学习一门新的语言。文中我是以 python 为例,但你把文中的思路换成别的同样语言一样适用。 我现在一直在追求认知层面的学习,因为学习到最后你会发现,学习任何东西,你只要把握了本质的方法,你学什么都非常的快。
我非常的明确自己每个阶段该做什么,以及怎么做。每天我只要看下思维导图,就懂得自己还有哪些内容没有掌握。我的方向永远不会迷失,并且是序循渐进。并不是一上来就学习最难的部分,甚至我在整个 python 学习过程中,那些很难理解的知识,我都会已目前的情况来选择是否要死磕。
如果这个知识点,不是我目前必须要掌握的内容,那我会选择跳过。
学习就好比旅行,任性一点没关系,向你喜欢的风景出发。有时候回头看,发现自己错过了什么风景,再回头追寻并不晚。不用害怕错过,重要的是一直在旅程上。
当然编程的学习还有很重要的一点就是基础,编程的基础可以包括这几方面:1 数据结构、2 算法、3 计算机网络、4 操作系统。如果你以后想要走的更远,那编程基础一定要牢牢的掌握。
9、我的知识星球
我的知识星球正式开始运营了,并且这篇文章我上周就在我星球里发布。我的星球主要是带大家从认知的层面去学习事物,不管是 python,还是别的内容。
在我的星球里你可以得到哪些?
1. 每周一篇长文
随着你接触的领域多了以后,你会发现人这一生都在为自己的认知买单,趁职业早期,不仅要打磨技能,更要吸纳新知。当你的认知提升上去,你会发现其他方面也会迅速提升,我就有切身体会。
所以我会在星球里,每周写一篇长文,就像今天这样的文章,输出这些年提升的认知,这些认知是自己能如此快速成长的根本原因。
2. Python 成神之路
日拱一卒,功不唐捐。说的是每天像个卒子一样前进一点点,进步一点点,终会有所成就,任何功夫都不会浪费。编程的学习也是如此。我现在的领域很明确就是走 Python 方向,对于编程这块的学习,我一直都没有落下。
随着星球正式运营,我会在星球里每天输出一个 Python 知识点,会每天带大家学习一个内容。从最基础的内容一步步的进阶,到实战项目练习,带大家一起共同成长。
3. 现在加入立减 20
目前星球的定价是 99 元,如果你把今天这篇文章认真的去执行,这篇文章带你的价值绝对超过 99。而且只要你现在加入星球,立返 20 给你,所以现在的价格是 79。
推荐阅读:
人必有痴,而后有成